{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第五步：调整正则化参数：reg_alpha 和reg_lambda"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "import math\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#input data\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(dpath +\"RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第二轮参数调整得到的n_estimators最优值（260），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第一次调优（步长0.5）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [1.5, 2], 'reg_lambda': [0.5, 1, 2]}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "#reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "reg_alpha = [ 1.5, 2]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.5, 1, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58255, std: 0.00370, params: {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  mean: -0.58283, std: 0.00350, params: {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  mean: -0.58278, std: 0.00349, params: {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  mean: -0.58232, std: 0.00366, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.58240, std: 0.00388, params: {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  mean: -0.58310, std: 0.00347, params: {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       " -0.58231530387498665)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=260,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.7,\n",
    "        colsample_bytree=0.9,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 948.85109301,  565.58074937,  571.62429509,  576.59957957,\n",
       "         568.68152676,  520.30795979]),\n",
       " 'mean_score_time': array([ 1.00505753,  0.98485637,  1.03145905,  1.01545811,  1.0256587 ,\n",
       "         0.85964918]),\n",
       " 'mean_test_score': array([-0.58254636, -0.58282948, -0.58277744, -0.5823153 , -0.58239818,\n",
       "        -0.58310312]),\n",
       " 'mean_train_score': array([-0.49433453, -0.4956397 , -0.49861512, -0.49677709, -0.49825339,\n",
       "        -0.5005383 ]),\n",
       " 'param_reg_alpha': masked_array(data = [1.5 1.5 1.5 2 2 2],\n",
       "              mask = [False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_reg_lambda': masked_array(data = [0.5 1 2 0.5 1 2],\n",
       "              mask = [False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " 'rank_test_score': array([3, 5, 4, 1, 2, 6]),\n",
       " 'split0_test_score': array([-0.57652564, -0.57706157, -0.57759816, -0.57613757, -0.5764592 ,\n",
       "        -0.57758829]),\n",
       " 'split0_train_score': array([-0.49498764, -0.49575922, -0.49927719, -0.49716968, -0.49871811,\n",
       "        -0.50121295]),\n",
       " 'split1_test_score': array([-0.58076779, -0.58151157, -0.58096397, -0.58078166, -0.58023296,\n",
       "        -0.58122046]),\n",
       " 'split1_train_score': array([-0.49375398, -0.49532558, -0.49796404, -0.49627461, -0.49792437,\n",
       "        -0.50033867]),\n",
       " 'split2_test_score': array([-0.58297288, -0.58269118, -0.58203442, -0.58307304, -0.58227628,\n",
       "        -0.58345226]),\n",
       " 'split2_train_score': array([-0.49487341, -0.49495394, -0.49822131, -0.49717343, -0.49754072,\n",
       "        -0.50060966]),\n",
       " 'split3_test_score': array([-0.58536779, -0.58638141, -0.58622503, -0.5848333 , -0.5856743 ,\n",
       "        -0.58586163]),\n",
       " 'split3_train_score': array([-0.49514422, -0.49653994, -0.49953756, -0.4969765 , -0.4991963 ,\n",
       "        -0.50085777]),\n",
       " 'split4_test_score': array([-0.58709908, -0.58650279, -0.58706692, -0.5867523 , -0.58734965,\n",
       "        -0.58739426]),\n",
       " 'split4_train_score': array([-0.49291342, -0.49561984, -0.49807551, -0.49629124, -0.49788743,\n",
       "        -0.49967242]),\n",
       " 'std_fit_time': array([ 204.58653153,   13.352397  ,   13.48103765,   14.7590188 ,\n",
       "          15.33423068,   65.82720886]),\n",
       " 'std_score_time': array([ 0.01969891,  0.02576496,  0.032366  ,  0.02026541,  0.03042281,\n",
       "         0.1678936 ]),\n",
       " 'std_test_score': array([ 0.0036954 ,  0.00349668,  0.0034914 ,  0.00366377,  0.0038787 ,\n",
       "         0.00346701]),\n",
       " 'std_train_score': array([ 0.00086361,  0.00052803,  0.00065718,  0.00040976,  0.00060912,\n",
       "         0.00051998])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.582315 using {'reg_alpha': 2, 'reg_lambda': 0.5}\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAELCAYAAADkyZC4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOX1wPHvyUbYkU2RsCkgoETUiAgWCmoFFxRBATdA\ngVqliK1a15ZSWxGtUqr9URbRugCKC0QEFItFFJTIvm8ihE0IskkSspzfH/cmDGGSTEJu7iQ5n+fJ\nw9x1zgUmZ977nvu+oqoYY4wxJS3C7wCMMcaUT5ZgjDHGeMISjDHGGE9YgjHGGOMJSzDGGGM8YQnG\nGGOMJyzBGGOM8YQlGGOMMZ6wBGOMMcYTUX4H4Ke6detq06ZN/Q7DGGPKlO++++6AqtYrbL8KnWCa\nNm1KUlKS32EYY0yZIiI/hLKf3SIzxhjjCUswxhhjPGEJxhhjjCcqdB9MMBkZGSQnJ5OWluZ3KCaI\n2NhY4uLiiI6O9jsUY0whLMHkkZycTPXq1WnatCki4nc4JoCqkpKSQnJyMs2aNfM7HGNMITy9RSYi\n3UVko4hsEZHHg2wfKCL7RWSF+zM4YNsYEVkrIutFZJy4v+1FZK6IrHS3jReRSHf9be66bBFJKG7M\naWlp1KlTx5JLGBIR6tSpY61LY8oIzxKM+4v/VaAH0AboLyJtguw6XVXbuT+T3GM7Ap2AeOAi4HKg\ni7v/7ap6sbu+HnCbu34NcCuwsARiP9NTGI/Yv40xZYeXLZj2wBZV3aaqJ4BpwM0hHqtALBADVAKi\ngX0AqnrE3SfK3a7u+vWqurHkwjfGmHIoOxu+GgfHD3r+Vl4mmIbAzoDlZHddXr1FZJWIzBCRRgCq\nuhhYAOxxf+ap6vqcA0RkHvAjcBSY4VH8xhhTvmSmwweD4bNnYOVUz9/OywQT7F6G5llOBJqqajww\nH3gDQESaA62BOJyk1E1EOueeRPU6oAFO66ZbkYISGSoiSSKStH///qIcWi598cUX3HjjjWe8T0E2\nbNjAlVdeSaVKlXjxxRfz3W/gwIE0a9aMdu3a0a5dO1asWFHs9zTG5HH8ILzZC9a8D9eMhA4PeP6W\nXlaRJQONApbjgN2BO6hqSsDiROB593UvYImqHgMQkTlABwL6V1Q1TURm4dx2+yzUoFR1AjABICEh\nIW/CCzuqiqoSEVF2H1mqXbs248aN46OPPip03xdeeIE+ffqUQlTGVCAHv4e3b4NDP0DvydC2dD5j\nXiaYpUALEWkG7AL6AXcE7iAiDVR1j7vYE8i5DbYDGCIiz+G0hLoAY0WkGlBdVfeISBRwPfClVxfw\n58S1rNt9pPAdi6DNuTX4000XFrjP9u3b6dGjB127dmXx4sWMGDGC8ePHk56ezvnnn8+UKVOoVq0a\nn3zyCb/73e+oW7cul156Kdu2bePjjz8Oes5vv/2WESNGkJqaSuXKlZkyZQoXXHDBKfuMHDmSrVu3\nsmvXLnbu3Mljjz3GkCFDADh27Bh9+vRhzZo1XHbZZbz11luICKNGjSIxMZHU1FQ6duzIv//979M6\n4uvXr0/9+vWZPXv2GfzNGWOKZdd38E5fyMqAuz+Cpp1K7a09+1qsqpnAMGAeTuJ4V1XXisgoEenp\n7jbcLS1eCQwHBrrrZwBbgdXASmClqiYCVYFZIrLKXf8jMB5ARHqJSDJwJTDb7acpszZu3Mg999zD\nZ599xuTJk5k/fz7Lli0jISGBl156ibS0NH79618zZ84cFi1aRGG3+1q1asXChQtZvnw5o0aN4skn\nnwy636pVq5g9ezaLFy9m1KhR7N7tNDqXL1/O2LFjWbduHdu2beOrr74CYNiwYSxdupQ1a9aQmpqa\nm+DGjx/P+PHji3zdTz31FPHx8Tz88MOkp6cX+XhjTIANs2HKDRBdBe77rFSTC3j8oKWqfgJ8kmfd\nHwNePwE8EeS4LODXQdbvwylZDvZeHwIfnmHIpyispeGlJk2a0KFDBz7++GPWrVtHp07Of4wTJ05w\n5ZVXsmHDBs4777zcBw779+/PhAkT8j3f4cOHGTBgAJs3b0ZEyMjICLrfzTffTOXKlalcuTJdu3bl\n22+/pVatWrRv3564uDgA2rVrx/bt27nqqqtYsGABY8aM4fjx4xw8eJALL7yQm266ifvvv7/I1/zc\nc89xzjnncOLECYYOHcrzzz/PH//4x8IPNMac7pt/w5w/wLmXwB3ToVr9Ug/BnuQPU1WrVgWcPphr\nr72WqVNPrfhYvnx5kc73zDPP0LVrVz788EO2b9/OL3/5y6D75b29lbNcqVKl3HWRkZFkZmaSlpbG\nAw88QFJSEo0aNWLkyJFn9BBkgwYNct9r0KBBBRYEGGPykZ3tVIktfgUuuAF6T4SYqr6EUnZ7jiuI\nDh068NVXX7FlyxYAjh8/zqZNm2jVqhXbtm1j+/btAEyfPr3A8xw+fJiGDZ0q8ddffz3f/WbOnEla\nWhopKSl88cUXXH550AYjQG4yqVu3LseOHWPGjDOrGN+zx+mOU1U++ugjLrroojM6nzEVTkYqvDfA\nSS7tfw193/QtuYC1YMJevXr1eP311+nfv39un8Szzz5Ly5Yt+de//kX37t2pW7cu7du3L/A8jz32\nGAMGDOCll16iW7f8K7vbt2/PDTfcwI4dO3jmmWc499xz2bRpU9B9a9WqxZAhQ2jbti1NmzY9JRnl\n9L/cf//97N27l4SEBI4cOUJERERuX06NGjW4/vrrmTRpEueeey533nkn+/fvR1Vp165dsfpwjKmw\nfj4AU/tD8lK47m9OGbLPI1+IathX6nomISFB885ouX79elq3bu1TREVz7NgxqlWrhqry4IMP0qJF\nCx5++OFin2/kyJFUq1aNRx55pASjLHll6d/ImFKRshXe6g1H98CtE6BNqIOmFI+IfKeqhY75aLfI\nyrCJEyfSrl07LrzwQg4fPsyvf31aXYQxprzb8Q1MugbSj8CARM+TS1FYC6YMt2CCmTJlCv/4xz9O\nWdepUydeffVVnyIqeWX938iYErP2Q/jg11CzIdw5A+qcXypvG2oLxvpgyplBgwYxaNAgv8MwxnhJ\nFb7+p1Mt1ugK6DcVqtbxO6rTWIIxxpiyJDvLeb5l6UTndlivf0N0Zb+jCsoSjDHGlBUnfoYZ98Gm\nOdDxt3DNKAjjcQotwRhjTFlwdB9M7Qt7VsL1L0L7IX5HVChLMMYYE+72b4S3+sDxA9DvHbigh98R\nhSR821amVJTGfDBvv/028fHxxMfH07FjR1auXFnscxlT4WxfBJOvhcw0GDi7zCQXsBZM2CsP88E0\na9aM//3vf5x11lnMmTOHoUOH8s033/gdljHhb9W78NEDUPs8uPM9OKuJ3xEViSWYgsx5HPauLtlz\nntMWeowucJfyNh9Mx44dc1936NCB5OTk4vzNGVNxqMKXf4f//gWaXAX93oLKZ/kdVZGV3a/F5Vx5\nnQ9m8uTJ9OhRdpr4xpS6rAxIHO4kl7a3wd0flMnkAtaCKVghLQ0vlcf5YBYsWMDkyZNZtGjRmf71\nGFM+pR+FdwfA1s/hF49At6d9H7DyTHjaghGR7iKyUUS2iMjjQbYPFJH9IrLC/RkcsG2MO9vlehEZ\nJ+59FxGZKyIr3W3jRSTSXV9bRD4Tkc3un2Uz5bvyzgezYsUKVqxYwbp165g8eTJFHeInZz6YNWvW\nkJiYmO+8LcWZD2bGjBmsXr2aIUOG5HveVatWMXjwYGbOnEmdOuH3xLExvjuyG17rAdu+gJvGwdXP\nlOnkAh4mGPcX/6tAD6AN0F9E2gTZdbqqtnN/JrnHdgQ6AfHARTizWHZx979dVS9219cDbnPXPw58\nrqotgM/d5TKvPMwHs2PHDm699VbefPNNWrZsWWCcxlRI+9Y6A1b+9D3c+S5cNsDviEqEly2Y9sAW\nVd2mqieAaUCow3wqEAvEAJWAaGAfgKoecfeJcrfnfJW/GXjDff0GcMuZXkA4CJwPJj4+ng4dOrBh\nwwYqV66cOx/MVVddxdlnn03NmjXzPc9jjz3GE088QadOncjKysp3v5z5YDp06JA7H0x+AueDueWW\nW06bDyanD2bUqFGkpKTwwAMP0K5dOxISCh0jz5iKY+t/YfJ1oNkwaA40v8bviEqMZ6Mpi0gfoLuq\nDnaX7wauUNVhAfsMBJ4D9gObgIdVdae77UVgMCDAK6r6VMBx83AS2BzgblXNEpFDqlorYJ+fVLXA\n22RlfTRlmw/GmDJu+VuQ+BDUvcBpudSM8zuikITDfDDBbh7mzWaJQFNVjQfm47ZARKQ50BqIAxoC\n3USkc+5JVK8DGuC0bvKfnjFYUCJDRSRJRJIKq7wKdzYfjDFllCos+BvMfBCaXgX3zikzyaUovKwi\nSwYaBSzHAbsDd1DVlIDFicDz7utewBJVPQYgInOADsDCgGPTRGQWzq2xz4B9ItJAVfeISAPgx2BB\nqeoEYAI4LZjiX57/Hn744dNaLGcyH8zIkSNLMjxjTDCZJ5wy5JVTod2dcNM/IDLa76g84WWCWQq0\nEJFmwC6gH3BH4A45CcFd7Amsd1/vAIaIyHM4LaEuwFgRqQZUd5NIFHA98KV7zCxgADDa/XNmcQNX\n1dOqqcqK8j4fTEWeIM+UA6mH4N274fuF0PUp6Pxoma8UK4hnCUZVM0VkGDAPiAReU9W1IjIKSFLV\nWcBwEekJZAIHgYHu4TNwbn2txrmtNldVE0XkbGCWiFRyz/lfIOdpvtHAuyJyH06CyqkuK5LY2FhS\nUlKoU6dOmU0y5ZWqkpKSQmxsrN+hGFN0h3bC27dByma4ZTy06+93RJ6zKZPzdPJnZGSQnJyc7/Mc\nxl+xsbHExcURHV0+bymYcmr3CnjndshIg75vwnldCj8mjNmUycUUHR2d+3S8McacsU2fwnsDoUpt\nuGcm1K84FZA2Fpkxxngl6TWY2g/qnA+D51eo5ALWgjHGmJKXnQ2f/xm+GgstfgV9pkClan5HVeos\nwRhjTEnKTIePfgNr3ofLBjnTG0dWzF+1FfOqjTHGC8cPwrQ7YcfXcM2fodND5boMuTCWYIwxpiQc\n/N4pQz70A/SeDG37+B2R7yzBGGPMmUr+zilDzs50KsWadCz8mArAqsiMMeZMbJgNr98AMVWdSjFL\nLrkswRhjTHEtGe/0uZzdxkkudVv4HVFYsVtkxhhTVNnZ8OnTsORVuOAG6D0JYqr4HVXYsQRjjDFF\nkZEKHwyB9Ylwxf1w3d8gItLvqMKSJRhjjAnVzwecJ/OTk+C65+DKB/yOKKxZgjHGmFAc2AJv94Gj\ne+D2/0Cbnn5HFPYswRhjTGF2LHFaLhIBAz6GRpf7HVGZYFVkxhhTkLUfwhs9oXJtuO8zSy5FYAnG\nGGOCUYWv/uEMtX/uJU5yqXO+31GVKXaLzBhj8srKhLl/gKWToM0t0OvfEG0zqRaVpy0YEekuIhtF\nZIuIPB5k+0AR2S8iK9yfwQHbxojIWhFZLyLjxFFFRGaLyAZ32+iA/ZuIyOciskpEvhCROC+vzRhT\nTp34Gabf6SSXjsOdofYtuRSLZwlGRCKBV4EeQBugv4i0CbLrdFVt5/5Mco/tCHQC4oGLgMuBnDlG\nX1TVVsAlQCcR6ZGzHviPqsYDo4DnPLo0Y0x5dXQfTLkeNn/qDLP/q79AhPUkFJeXf3PtgS2quk1V\nTwDTgJtDPFaBWCAGqAREA/tU9biqLgBwz7kMyGmptAE+d18vKMJ7GWMM/LgBJl0DBzZBv6nQfojf\nEZV5XiaYhsDOgOVkd11evd3bWjNEpBGAqi7GSRJ73J95qro+8CARqQXcxMmkshLo7b7uBVQXkTp5\n30xEhopIkogk7d+/v/hXZ4wpP77/El77FWSmwcDZcEF3vyMqF7xMMMFm2dE8y4lAU/e21nzgDQAR\naQ60xmmdNAS6iUjn3BOLRAFTgXGqus1d/QjQRUSW49xO2wVknhaA6gRVTVDVhHr16p3J9RljyoOV\n0+HNXlDtHGfAyoaX+h1RueFlgkkGGgUsxwG7A3dQ1RRVTXcXJwKXua97AUtU9ZiqHgPmAB0CDp0A\nbFbVsQHn2q2qt6rqJcBT7rrDJXlBxphyRBUWvgAfDoXGHeC+eXBWE7+jKle8TDBLgRYi0kxEYoB+\nwKzAHUSkQcBiTyDnNtgOnNZIlIhE47RI1rvHPAvUBEbkOVddEcm5nieA10r4eowx5UVWBiQOh/8+\nC21vh7veh8pn+R1VueNZglHVTGAYMA8nObyrqmtFZJSI5AziM9wtN14JDAcGuutnAFuB1Th9KytV\nNdEtPX4Kp0N/WZ7S5l8CG0VkE3A28Fevrs0YU4alHYF3+sKy/0DnR+HWCRBVye+oyiVRzdstUnEk\nJCRoUlKS32EYY0rLkd3w9m3w43q4aSxceo/fEZVJIvKdqiYUtp89yW+MqRj2roF3boe0w3Dnu9D8\nGr8jKvcswRhjyr8tn8O7A6BSdbh3LpzT1u+IKgR7RNUYU74tf8tpudRq7JQhW3IpNdaCMcaUT6qw\n4G+wcAyc1xVufwNia/odVYViCcYYU/5knoBZv4VV06DdXU6HfmS031FVOJZgjDHlS+ohmH4XbP8S\nuj7llCJLsIFFjNcswRhjyo9DO+Dt2yFlizOHy8X9/I6oQrMEY4wpH3avcDrzM9KcJ/PP61L4McZT\nlmCMMWXfpk+dqY2r1IZ7ZkL91n5HZLAyZWNMWbd0MkztC3WbO2XIllzChrVgjDFlU3Y2fD4SvvoH\ntPiVM7VxpWp+R2UCWIIx5cLuQ6mMmbuBw6kZ1KgcTc3K0dSIdf+sHJW7nLutcjTVK0UREWHVRWVS\nRhp89BtY+wEk3As9XoBI+3UWbuxfxJR5M1fs4umP1pCVrZxfrxrbDvzM4dQMjqRmkF3AWK4iUL1S\n1CkJKTAZ5SSivEkqZ31sdGTpXaQ56fhBmHYH7FgM1/wZOj1kZchhyhKMKbMOH8/gmZlrmLVyN5c1\nOYuXb29H4zpVcrerKsfSMzmSlsnh4xkcSXOSzuHUDGedm4SOpDrbDqdmsP3AcXd7BsdPZBX4/jFR\nEW7CiQraajotSQVsqx4bTaS1noru4Pfwdh+nHLnPa3BR78KPMb6xBGPKpK+3HOD3761k/9F0fn9t\nS37zy/OJijy1ZkVEqB4bTfXYaBrWqlzk9ziRmc3RtNMTUk4COpKaGfA6g59+PsH2Az/n7ptVUPOJ\nk60nJwEFS0hRp9zSC0xSsdERSEX71p6c5Mzjkp3pVIo16eh3RKYQlmBMmZKWkcWL8zYyadH3nFe3\nKh880JH4uFqevFdMVAR1qlWiTrWiT0alqhw/kZWbgJwW1OlJylnO5EhqBjsOHs/d9nMhrafoSDml\nXykwKeXXaspZrh4bdVoyDnvrP4b3B0O1+s4zLnVb+B2RCYGnCUZEugP/ACKBSao6Os/2gcALwC53\n1SuqOsndNga4AaeU+jPgIaAy8B5wPpAFJKrq4+7+jYE3gFru+z2uqp94eX2mdG3Ye4QR01awYe9R\n7urQmCevb02VmPD8jiQiVK0URdVKUZxL0VtPmVnZHEnLDJqMTl12/jycmsHOgASVWUjrqVqlqNwW\nUkHJKFg/VOXoyNJtPS35P5j7BDS8FPpPh2r1Su+9zRnx7NMpIpHAq8C1QDKwVERmqeq6PLtOV9Vh\neY7tCHQC4t1Vi4AuwLfAi6q6QERigM9FpIeqzgGexpmW+f9EpA3wCdDUo8szpSg7W5m86HtemLeR\nGpWjmTLwcrq2qu93WJ6KioygdtUYaleNKfKxqkpqRtapyeh4wUlq58HjHHVbWMfSMwuOLUJyE09R\nk1T12CiiQ209ZWfBvKfgm/+DVjfCrRMhpkrhx5mw4eXXv/bAFlXdBiAi04CbgbwJJhgFYoEYQIBo\nYJ+qHgcWAKjqCRFZBsQFHFPDfV0T2F1C12F8tPtQKr9/dyWLt6XwqzZn89ytbYt1y6oiERGqxERR\nJSaKc2rGFvn4zKxsjqZlFpiQnNcnW1i7DqXmvs7IKrj1VDUmMk/l3ulFEbWjM+m46gnO3vUZBy+6\nl7Ruf6GGxlBVteL1PZVhXiaYhsDOgOVk4Iog+/UWkc7AJuBhVd2pqotFZAGwByfBvKKq6wMPEpFa\nwE04t+AARgKfishvgapA0PlQRWQoMBSgcePGxbw0UxpmrtjFMx+tITNbeb53W25PaGS/XEpBVGQE\nZ1WN4axitp7SMrJPu4VXUD/U7kOprN/jvD6alkkdDjMp5u/Uk638OfNupiRdA0n/AyAyQoL2M9XI\n02oK1idVIzaamKgy1vdUxhUpwYhIBFBNVY+EsnuQdXm/2iQCU1U1XUTux+lD6SYizYHWnGydfCYi\nnVV1oRtHFDAVGJfTQgL6A6+r6t9F5ErgTRG5SFWzTwlAdQIwASAhIaHgr1rGF4Hlx5c2rsXLfdvR\npE5Vv8MyIRARKsdEUjkmkrNrFL31lLV/M7zdBzm6l51d/80151xN+0L6oXYfSs1tTZ3Iyi7w/JWj\nI/O9hVcjT0LK+2xUtUpR9gWniApNMCLyDnA/Tqf6d0BNEXlJVV8o5NBkoFHAchx5blupakrA4kTg\nefd1L2CJqh5zY5gDdAAWutsnAJtVdWzA8fcB3d3zLhaRWKAu8GNh12jCx9dbD/D7d1fyYwHlx6ac\n+mExkdP6g0TAwI9p0uhymhTxFGkZWac811RYP9TeI2ls3HeUI6kZHE3PRAv4yhkh5LaEipqkalau\nmK2nUFowbVT1iIjcidNx/gecRFNYglkKtBCRZjhVYv2AOwJ3EJEGqrrHXewJ5NwG2wEMEZHncFpC\nXYCx7jHP4vSxDM7zfjuAq4HXRaQ1Th/O/hCuz4SB9MyT5cfN6lTlg9905OJG3pQfmzC05gP48H6o\nGQd3zYDa5xXrNLHRkcRGR1K/GK2n7GzlaHpA5V6Q551Ovb2Xyb4jx3KX0zMLbj3FRkcEfdapsNt9\nNatEUy2mbA5rFEqCiRaRaOAWnL6QDBEp9NaSqmaKyDBgHk7Z8GuqulZERgFJqjoLGC4iPYFM4CAw\n0D18BtANWI1zW22uqiaKSBzwFLABWOY2V3NKm38PTBSRh91jBqoW9H3EhIuyVH5sSpiqM1jl/D9B\now7Qf6oz5L4PItzquJqVo0+59RKqtIysoA/gnjJ6RM6IEmkZ/Hg0jS0/nty3sNZT9WBDGQWuy5Ok\nckaYqBHr37BGUtjvYBEZjtNqWYnzXEpj4C1V/YX34XkrISFBk5KS/A6jwsrOVl776nvGzHXKj1/o\nE1/uy49NgKxMmPMYJE2GC3vBLeMhuugtj/IgO1s5diKw9VRAkgrysG5aRsGtp0pREae1mu65smmx\nP28i8p2qJhS2X6FfE1V1HDAuYNUPItK1WFEZ49p9KJVH3lvJ11tTuLbN2Yy28uOKJf0YzLgXNs+D\njsOdQSsjKl4fRY6ICHFaHrHRxJ1V9OPTM7Nyn2MqbLy9I6mZHDh2grSMgkeLKAmhdPI/BEwBjgKT\ngEuAx4FPvQ3NlFezVu7m6Q9XW/lxRXV0rzO18d7VcMPf4fK83ammqCpFRVKpWiR1w+xLWig3uu9V\n1X+IyHVAPWAQTsKxBGOK5HBqBn+cuYaZK3ZzSeNajLXy44rnxw3OaMjHU6DfVLigu98RGQ+FkmBy\nvlpeD0xR1ZViXzdNEX299QCPvLuSfUfT+d21LXnAyo8rnu8XwrS7nH6WQZ/AuZf4HZHxWCgJ5jsR\n+RRoBjwhItWBgnuUjHGlZ2bx9083MfHLbVZ+XJGtnA4zH4Q658Od70EtG0WjIgglwdwHtAO2qepx\nEamDc5vMmAIFlh/feUVjnrrByo8rHFVY+CIseBaa/gL6vgWV7QtGRRFKFVm2+/zJHe6dsf+paqLn\nkZky69Ty4yheG5hAt1Zn+x2WKW1ZGfDxw7D8TYjvCz3/CVHh1QltvBVKFdlo4HLgbXfVcBHpqKpP\neBqZKZOs/NgAkHYE3hsAW/8LnR+Frk+Bdd1WOKHcr7geaJczaKSIvAEsByzBmFMElh+PvrUtfS+3\n8uMK6fAupwz5x/XQ8xW49G6/IzI+CfWGeC2coVzAGQfMmFx5y49fvr0dTeta+XGFtHcNvH0bpB91\nOvObX+13RMZHoSSY54Dl7vwsAnTGWi/GZeXHJteWz+HdAVCpOtw7B85p63dExmehdPJPFZEvcPph\nBGdcMvsNUsEFlh83rVOV93/TkXZWflxxLXsTEh+C+q3hjnehZkO/IzJhIKRbZO6Q+rNylkVkB86g\nl6YCsvJjk0sVFvwVFr4A53WF2/8DsTUKP85UCMX9rWA9txVQbvnxvI3UiI1i8oAErm5t5ccVVuYJ\nmDUMVk2HS+6CG8dCZLTfUZkwUtwEY/OsVDB7Djvlx19tSeGa1mczunfbsBtYz5Si1EMw/S7Y/iV0\nfRo6P2JlyOY0+SYYEfknwROJ4FSVmQrCyo/NKQ7tcCrFUrZCrwlwcV+/IzJhqqAWTEEzcYU0S5eI\ndAf+gTOj5SRVHZ1n+0CcqZd3uatyZqdERMbgTHAWAXwGPARUBt4DzgeygERVfdzd/2UgZ56aKkB9\nVbVEeAYOp2bwp5lr+GjFbto1ckY/tvLjCm73cninL2Skwd0fQLPOfkdkwli+CUZV3ziTE4tIJPAq\ncC2QDCwVkVmqui7PrtNVdVieYzsCnYB4d9UioAvwLfCiqi4QkRjgcxHpoapzVPXhgON/izNvjSmm\nxVtT+P27K9h3NJ2Hr2nJg12t/LjC2zQP3hsIVerAPTOdijFjCuBl6U97YIuqbgMQkWnAzUDeBBOM\nArFADM4tuWhgn6oeBxYAqOoJEVkGxAU5vj/wpzO+ggooPTOLlz7dxAS3/HjG/VdySeNiTLFnypel\nk+CTR51nW+54F6qf43dEpgzwMsE0BHYGLCcDVwTZr7eIdAY2AQ+r6k5VXew+2LkHJ8G8oqrrAw8S\nkVrATTi34ALXN8GZWuC/wYISkaHAUIDGja3SOtDGvUcZMX0F6/cc4Y4rGvO0lR+b7GyY/yf4ehy0\nuA76vAaVqvkdlSkjvLznEawXOG/RQCLQVFXjgfnAGwAi0hxojdM6aQh0c5MQ7vYoYCowLqeFFKAf\nMENVg07su6LxAAAdPElEQVQ4raoTVDVBVRPq1atXjMsqf7KzlUlfbuOmVxax/2gak+5J4G+92lpy\nqegy0uD9e53kknAf9HvHkospklBGUx4XZPVhIElVZxZwaDLQKGA5DtgduIOqpgQsTgSed1/3Apao\n6jE3hjlAB2Chu30CsFlVxwZ5337AgwXEZQKcWn5cn9G946382MDxgzDtDtixGK75M3R6yMqQTZGF\n0oKJxZlwbLP7Ew/UBu4TkWC/4HMsBVqISDO3Q74fAaMBAIhIg4DFnkDObbAdQBcRiRKRaJwO/vXu\nMc/iDLg5Iu8bisgFwFnA4hCuq8JLXLmb615eyLIfDvHcrW2ZeE+CJRcDB7fB5Gth1zLoMwWuGmHJ\nxRRLKPdAmgPdVDUTQET+D/gUpzpsdX4HqWqmiAwD5uGUKb+mqmtFZBRO62cWztwyPYFMnNGaB7qH\nzwC6uedXYK6qJroTnz0FbACWuc9i5JY243TuT1NVexC0AEfSMvjTzLV8uHwX7RrV4uW+7Whm5ccG\nYOdSmNoPNMupFGtypd8RmTJMCvtdLCIbgfaqethdrgl8o6qtRGS5qpbZcuCEhARNSgrpkZ5yY8m2\nFH7/7kr2Hknjt92aM6xrcys/No71ifD+YKdC7M4ZULeF3xGZMCUi36lqQmH7hdKCGQOscEdUzhmu\n/28iUhWnY96UAYHlx01qV7HyY3Oqxf+CeU9Cw8ug/zSoZgUw5syFMlz/ZBH5BOe5FgGeVNWczvpH\nvQzOlAwrPzb5ys5yEss346HVjXDrRIip4ndUppwI9bfM5cAv3NdZ5KkGM+EpO1uZ8vV2np+7geqV\noph0TwLXtLHRj43rxHH4YAhs+Biu+A1c91eIiPQ7KlOOhFKmPBonwbztrhouIh1V1Wa1DGNWfmwK\ndGy/05m/6zvoPho6/MbviEw5FEoL5nqgnapmA4jIG8BybNrksPXxqt089eEaTmRm89ytbelnox+b\nQAc2w9t94Ohe6PsmtL7J74hMORXqLbJaOGXE4DyDYsKQlR+bQv2wGKb1B4mEgbMhrtBCIGOKLZQE\n8xyw3B0bLKeKzFovYSaw/HjENS2s/Nicbs378OFvoFYjuPM9qH2e3xGZci6UKrKpbony5TgJ5g94\nO4aZKYL0zCxe+mwTExZa+bHJhyp8NRbmj4TGVzpjilWp7XdUpgII6RaZqu4hYJgXEdkB2FDEPtu0\n7ygPTXPKj/u3d8qPq1ay8mMTICsT5jwKSa/Bhb3glvEQHet3VKaCKO5vI+sx9lF2tvL619sZbeXH\npiDpx2DGvbB5njNY5dUjIcJuPpjSU9wEY2N9+WTv4TQeeW8li7Yc4OpWTvlxvepWfmzyOLoX3rkd\n9q6GG16Cy+/zOyJTAeWbYETknwRPJIJTVWZKWWD58d96taV/eys/NkH8uB7evs0Zcr//NGh5nd8R\nmQqqoBZMQaNAVqwRIn0WWH58caNajLXyY5Of7xfCtLucfpZBs+HcMjsWrSkH8k0wqvpG3nUico6q\n7vU2JBPom20p/M4tP37o6hYM69acaCs/NsGsnAYzh0Gd850y5FpWh2P8VdQ+mE+AS70IxJzKyo9N\nyFRh4Quw4K/Q9BfQ9y2obHexjf+KmmDshn8pOLX8uBFP39DGyo9NcFkZ8PEIWP4WxPeDnv+EqBi/\nozIGKPoDkxOLsrOIdBeRjSKyRUQeD7J9oIjsF5EV7s/ggG1jRGStiKwXkXHiqCIis0Vkg7ttdJ7z\n3S4i69xt7xTx2nyXna28tuh7bvznIn48ksbEexJ47tZ4Sy4muLQjTmf+8reg82PQa7wlFxNWivSb\nS1X/Feq+IhIJvIoztXIysFREZqnqujy7TlfVYXmO7Qh0AuLdVYuALsC3wIuqukBEYoDPRaSHqs4R\nkRY4Q9h0UtWfRKR+Ua7Nb3sPp/HojJV8ufkA3VrV53krPzYFObzLKUPevwF6vgKX3u13RMacxsuv\nxu2BLaq6DUBEpgE3A3kTTDAKxAIxOLflooF9qnocWACgqidEZBkQ5x4zBHhVVX9yt/9Ygtfiqdmr\n9vDkh6s5kZnNX3tdxB3tG1v5scnf3tXw9u2QfhTueBeaX+13RMYE5WU5UkNgZ8Bysrsur94iskpE\nZohIIwBVXYyTSPa4P/NUdX3gQSJSC7gJ+Nxd1RJoKSJficgSEelespdT8o6kZfC76St48J1lNK1b\nldnDr+LOK5pYcjH52zIfXuvhvL53riUXE9a8bMEE+y2Z98HNRGCqqqaLyP3AG0A3EWkOtOZk6+Qz\nEemsqgsBRCQKmAqMy2kh4VxLC+CX7nFfishFqnrolKBEhgJDARo39q+MM7D8ePjVLfitlR+bwiz7\nDySOgPqtnZZLzWDf14wJH17+RksGGgUsx5FnqmVVTVHVdHdxInCZ+7oXsERVj6nqMWAO0CHg0AnA\nZlUdm+f9Zqpqhqp+D2zESTinUNUJqpqgqgn16tU7g8srnhOZ2Yyes4F+E5cQFSm8d/+V/O7alpZc\nTP5U4fO/wKzfwnldYNAcSy6mTPDyt9pSoIWINHM75PsRMCIzgIg0CFjsCeTcBtsBdBGRKBGJxung\nX+8e8yzOpGcj8rzfR0BXd5+6OLfMthFGNu07yi2vfsX4/22lb0IjPhn+Cy61Z1tMQTLT4YOh8OWL\ncMndTssltobfURkTEs9ukalqpogMA+YBkcBrqrpWREYBSao6CxguIj2BTJwZMwe6h88AugGrcW6r\nzVXVRBGJA54CNgDL3L6KV1R1kvs+vxKRdUAW8Kiqpnh1fUWRna28sXg7z81xRj+eeE8C19rox6Yw\nqT/B9Lth+5fQ9Wno/AhY/5wpQ0S14g6MnJCQoElJ3g6rZuXHplh++sF5xuXgNrj5Vbi4r98RGZNL\nRL5T1ULn27Yn+Dxk5cemWHYtg3f6OrfH7v4AmnX2OyJjisUSjAeOpGUwctZaPli2i4vjavJy33ac\nV6+a32GZsmDjXJgxCKrUhQGJUL+V3xEZU2yWYErYt98f5OHpK9hzONXKj03RLJ0EnzwK58Q7nfnV\nrZ/OlG2WYErIicxsXp6/ifH/20rj2lWY8ZuOViFmQpOdDfP/CF//E1p2h96ToZK1eE3ZZwmmBGze\nd5QR01ewdvcR+l3eiGdutNGPTYgy0uDDX8O6jyDhPugxBiLt/44pH+x/8hnIKT8ePWcDVStFMeHu\ny/jVhef4HZYpK44fhKn9YecSuHYUdBxuZcimXLEEU0z7jqTxyHtO+XHXC+rxfJ946leP9TssU1Yc\n3AZv9YHDydBnClx0q98RGVPiLMEUw2fr9vHojJWkZWTx7C0XcecVVn5simDnUpjaFzQbBsyCxh0K\nP8aYMsgSTDEI0KR2FSs/NkW3bhZ8MASqnwN3vg91m/sdkTGesQRTDNe0OZtureoTEWGtFlMEi/8F\n856EuAToPw2q1vU7ImM8ZQmmmCy5mJBlZzmJ5Zvx0OpG6D0Joiv7HZUxnrMEY4yXThyH9wfDxtnQ\n4QH41bMQEel3VMaUCkswxnjl2H6nM3/XMuj+PHS43++IjClVlmCM8cKBzfBWbzj2I/R9C1rf6HdE\nxpQ6SzDGlLQfvnYeoIyIgoEfO536xlRANgqjMSVpzfvwn5uhaj0YPN+Si6nQPE0wItJdRDaKyBYR\neTzI9oEisl9EVrg/gwO2jRGRtSKyXkTGiaOKiMwWkQ3uttGhnMsYz6nCopdhxr3Q8DK471Oo3czv\nqIzxlWe3yEQkEngVuBZIBpaKyCxVXZdn1+mqOizPsR2BTkC8u2oR0AX4FnhRVReISAzwuYj0UNU5\n+Z3LGM9lZcInj8B3U+DCW+GW/4NoGzbIGC/7YNoDW1R1G4CITANuBvImmGAUiAVicB6cjwb2qepx\nYAGAqp4QkWVAnAexGxOa9GPOBGGbP4VOI+DqP0GE3Xk2Bry9RdYQ2BmwnOyuy6u3iKwSkRki0ghA\nVRfjJJI97s88VV0feJCI1AJuAj4v6FzGeObIHpjSA7bMhxtfhmv/bMnFmABefhqCPequeZYTgaaq\nGg/MB94AEJHmQGuc1klDoJuI5E5MLiJRwFRgXE4LKb9znRaUyFARSRKRpP379xf74kwF9+N6mHQN\npGyF/tMh4V6/IzIm7HiZYJKBwFZEHLA7cAdVTVHVdHdxInCZ+7oXsERVj6nqMWAOEDjk7ARgs6qO\nDeFcp1DVCaqaoKoJ9erVK+almQpt2/9g8nWQnQGDPoGWv/I7ImPCkpcJZinQQkSauR3y/YBZgTuI\nSIOAxZ5Azm2wHUAXEYkSkWicDv717jHPAjWBESGey5iSs2Kq8wBljQZOGfK57fyOyJiw5Vknv6pm\nisgwYB4QCbymqmtFZBSQpKqzgOEi0hPIBA4CA93DZwDdgNU4t9XmqmqiiMQBTwEbgGXuHCyvqOqk\nAs5lzJlThf+NgS/+Bk1/4TydX7mW31EZE9ZENW+3SMWRkJCgSUlJfodhwl1WBiSOgBVvQXw/6PlP\niIrxOypjfCMi36lqoU8R21AxxhQk7TC8ew9s+wK6/AF++QTY7KXGhMQSjDH5ObwL3r4NDmyEnq/A\npXf7HZExZYolGGOC2bMK3rndeZDyzvfg/G5+R2RMmWMJxpi8tsyHdwdApRpw71w45yK/IzKmTLLH\njo0J9N0b8PbtcFYzGPK5JRdjzoC1YIwBpwz5v8/Cly/C+VfDba9DbA2/ozKmTLMEY0xmOsx8EFa/\nB5feAze8BJHRfkdlTJlnCcZUbKk/wbS74IdF0O1p+MUjVoZsTAmxBGMqrp9+cMqQD26DWydC/O1+\nR2RMuWIJxlRMu5bBO30hKx3u/hCa/cLviIwpd6yKzFQ8G+fA6zdAVCzc+6klF2M8YgnGVCzfToRp\nd0Ddls5oyPVb+R2RMeWW3SIzFUN2Nsz/I3z9T2jZHfq8BjFV/Y7KmHLNEowp/zJS4cNfw7qZcPlg\n6P48RNp/fWO8Zp8yU779nALT+sPOb+Dav0DH31oZsjGlxBKMKb9StjplyIeTnSfzL+zld0TGVCie\ndvKLSHcR2SgiW0Tk8SDbB4rIfhFZ4f4MDtg2RkTWish6ERknjioiMltENrjbRgc5Zx8RUREpdDIc\nU47t/BYmX+s8SDlgliUXY3zgWYIRkUjgVaAH0AboLyJtguw6XVXbuT+T3GM7Ap2AeOAi4HKgi7v/\ni6raCrgE6CQiPQLeszowHPjGo8syZcG6mfDGTc5oyIPnQ+MOfkdkTIXkZQumPbBFVbep6glgGnBz\niMcqEAvEAJWAaGCfqh5X1QUA7jmXAXEBx/0FGAOklcwlmDJFFRa/6gy1f05bJ7nUOd/vqIypsLxM\nMA2BnQHLye66vHqLyCoRmSEijQBUdTGwANjj/sxT1fWBB4lILeAm4HN3+RKgkap+XOJXYsLb0X2w\nca4zYOW8J6H1jTAgEarW9TsyYyo0Lzv5g5XqaJ7lRGCqqqaLyP3AG0A3EWkOtOZk6+QzEemsqgsB\nRCQKmAqMU9VtIhIBvAwMLDQokaHAUIDGjRsX/aqMv44fhN3LYfcy2L3CGfLl6G5nm0TAlcPg2lEQ\nEelvnMYYTxNMMtAoYDkO2B24g6qmBCxOBJ53X/cClqjqMQARmQN0ABa62ycAm1V1rLtcHaev5gtx\nSlDPAWaJSE9VTcrznhPc40lISMib8Ew4ST/qJJHchLIcftp+cnud5tC0E5x7KZx7iXNbrFI138I1\nxpzKywSzFGghIs2AXUA/4I7AHUSkgarucRd7Ajm3wXYAQ0TkOZyWUBdgrHvMs0BNILfiTFUPA3UD\nzvsF8Eje5GLCWEYq7F3ttEhyEsqBzeQ2ems2hoaXwGUDnYTS4GKoXMvPiI0xhfAswahqpogMA+YB\nkcBrqrpWREYBSao6CxguIj2BTOAgJ29xzQC6AatxfsPMVdVEEYkDngI2AMvc1sorOdVnpozIPAE/\nrnUSyS73VteP60CznO3VznaSSNvbnJbJuZdYf4oxZZCoVty7RAkJCZqUZI0cT2VlwoGNAclkOexb\nA1knnO2Vzzp5i6uh+2eNc/2N2RhTIBH5TlULfdbQnuQ3JSc725m8K6e/ZNcy2LsKMo4722Oqw7nt\n4Ir7TyaTWk1s6BZjyilLMKZ4VOHQjlM74HevhPTDzvaoytAgHi4dcLJ1Uvt8iLAZIoypKCzBmNAc\n2eMmkYCEctwtAoyIhnMugra9T97uqtfKRiw2poKz3wDmdD+nnJ5MjrrFfhIJ9VvDBT1OJpOzL4So\nSv7GbIwJO5ZgKrq0w7Bn5anlwYd2nNxepwU06+xWc13qPGsSU8W/eI0xZYYlmIrkxHGn0z2woitl\n88nttZo4SeTywU5CaXAxxNb0L15jTJlmCaa8ykx3yoF3L4dd7u2u/etBs53t1c91kkh8X+cBxgaX\nQNU6/sZsjClXLMGUB1mZsH/DqeXB+9ZCdoazvUodp2XS6ganmqtBO6jRwN+YjTHlniWYsiY7G1K2\nnNoBv2cVZKY62yvVcJ41ufLBk+XBNRvZsybGmFJnCSacqTqDO+ZWdC13hlU5cdTZHl3F6SdJGHSy\noqv2efasiTEmLFiCCReqTilwYDXX7uXOlL8AkTFw9kVwcd+TFV11W9qzJsaYsGW/nfzy84FTq7l2\nL4Nj+5xtEgn120CrG08OqVL/QoiK8TdmY4wpAkswpSH1EOxZcerowYdznjURpyVyXteTyeScthBd\n2deQjTHmTFmCKWknfnYeXAxsnRzcenL7WU0hLgHaD3ESyjnxEFvDt3CNMcYrlmDOREaaUw4cWB58\nYOPJZ01qNHRaJO3uODmvSZXa/sZsjDGlxBJMcayeAV+Pg33rAp41qeu0SNrcfDKZVD/b3ziNMcZH\nniYYEekO/ANnRstJqjo6z/aBwAs4UypDwOyUIjIGuAGIAD4DHgIqA+8B5wNZQKKqPu7ufz/woLv+\nGDBUVdd5c2ERzkRZHYedLA+uGWfPmhhjTADPEoyIRAKvAtcCycBSEZkV5Jf+dFUdlufYjkAnIN5d\ntQjoAnwLvKiqC0QkBvhcRHqo6hzgHVUd7x7fE3gJ6O7JxV10q/NjjDEmX14+kdce2KKq21T1BDAN\nuDnEYxWIBWKASkA0sE9Vj6vqAgD3nMuAOHf5SMDxVd1zGGOM8YmXCaYhsDNgOdldl1dvEVklIjNE\npBGAqi4GFgB73J95qro+8CARqQXcBHwesO5BEdkKjAGGl+TFGGOMKRovE0ywDom8rYpEoKmqxgPz\ngTcARKQ50BqnddIQ6CYinXNPLBIFTAXGqeq23JOrvqqq5wN/AJ4OGpTIUBFJEpGk/fv3F/vijDHG\nFMzLBJMMNApYjgN2B+6gqimqmu4uTgQuc1/3Apao6jFVPQbMAToEHDoB2KyqY/N572nALcE2qOoE\nVU1Q1YR69eoV6YKMMcaEzssEsxRoISLN3A75fsCswB1EJHDM+J5Azm2wHUAXEYkSkWicDv717jHP\nAjWBEXnO1SJg8QZgM8YYY3zjWRWZqmaKyDBgHk6Z8muqulZERgFJqjoLGO5WfGUCB4GB7uEzgG7A\napzbanNVNVFE4oCngA3AMnHKgnNKm4eJyDVABvATMMCrazPGGFM4Ua24xVYJCQmalJTkdxjGGFOm\niMh3qppQ2H42cYgxxhhPVOgWjIjsB37wO44AdYEDfgdRgHCPD8I/xnCPD8I/xnCPD8p/jE1UtdAq\nqQqdYMKNiCSF0uz0S7jHB+EfY7jHB+EfY7jHBxZjDrtFZowxxhOWYIwxxnjCEkx4meB3AIUI9/gg\n/GMM9/gg/GMM9/jAYgSsD8YYY4xHrAVjjDHGE5ZgSpmIdBeRjSKyRUQez2ef20VknYisFZF3wi1G\nEWksIgtEZLk7Evb1pRzfayLyo4isyWe7iMg4N/5VInJpmMV3pxvXKhH5WkQuLs34QokxYL/LRSRL\nRPqUVmwB711ojCLySxFZ4X5W/hdO8YlITRFJFJGVbnyDSjm+Ru7ndL37/g8F2cfbz4qq2k8p/eAM\nmbMVOA9nrpuVQJs8+7QAlgNnucv1wzDGCcBv3NdtgO2lHGNn4FJgTT7br8cZIFVwBkn9Jszi6xjw\n79ujtOMLJcaA/wv/BT4B+oRbjEAtYB3Q2F0u7c9KYfE9CTzvvq6HMxxWTCnG1wC41H1dHdgU5LPs\n6WfFWjClK5RJ2IYAr6rqTwCq+mMYxqhADfd1TfKMku01VV2I82HNz83Af9SxBKiVZ2BVTxUWn6p+\nnfPvCyzBnTSvNIXwdwjwW+B9oLT/DwIhxXgH8IGq7nD3L9U4Q4hPgeriDJpYzd03szRiA1DVPaq6\nzH19FGfA4Lxzcnn6WbEEU7pCmYStJdBSRL4SkSUi4s20z/kLJcaRwF0ikozz7fa3pRNayEKd7C4c\n3IfzDTKsiEhDnGkzxvsdSwFaAmeJyBci8p2I3ON3QHm8gjOv1W6cgXsfUtVsPwIRkabAJcA3eTZ5\n+lnxbDRlE1Qok7BF4dwm+yXON9svReQiVT3kcWw5QomxP/C6qv5dRK4E3nRj9OXDE0Qo1+A7EemK\nk2Cu8juWIMYCf1DVLHfU8nAUhTOH1NVAZWCxiCxR1U3+hpXrOmAFzsjw5wOficiXeur07p4TkWo4\nLdERQd7b08+KJZjSVegkbO4+S1Q1A/heRDbiJJylpRNiSDHeB3QHZ3prEYnFGdfIl1spQYRyDb4S\nkXhgEtBDVVP8jieIBGCam1zqAteLSKaqfuRvWKdIBg6o6s/AzyKyELgYp68hHAwCRqvT2bFFRL4H\nWgHfllYA7nxa7wNvq+oHQXbx9LNit8hKV6GTsAEfAV0BRKQuzm2AbZSeUGLcgfOtERFpDcQC4TT/\n9CzgHrdCpgNwWFX3+B1UDhFpDHwA3B1G37ZPoarNVLWpqjbFmZ/pgTBLLgAzgV+IMzFhFeAKTk5a\nGA4CPydnAxdQip9lt+9nMrBeVV/KZzdPPyvWgilFGtokbPOAX4nIOiALeLQ0v+GGGOPvgYki8jBO\nc3qg+y2tVIjIVJxbiHXdfqA/AdFu/ONx+oWuB7YAx3G+SZaaEOL7I1AH+JfbQsjUUh4YMYQYfVdY\njKq6XkTmAquAbGCSqhZYdl2a8QF/AV4XkdU4t6L+oKqlOcJyJ+BuYLWIrHDXPQk0DojR08+KPclv\njDHGE3aLzBhjjCcswRhjjPGEJRhjjDGesARjjDHGE5ZgjDHGeMISjDHGGE9YgjGmDHCHpf/4TPcx\npjRZgjGmBLhPQtvnyZgA9oEwpphEpKk7mdO/gGXA3SKyWESWich77iCDiMj1IrJBRBa5kzvl28oQ\nkfbiTEK23P3zgiD7jBSRN0XkvyKyWUSGBGyuJiIz3Pd72x0uBBH5o4gsFZE1IjIhZ70xXrIEY8yZ\nuQD4D3AtziCg16jqpUAS8Dt3INB/4wxqeRXOxFMF2QB0VtVLcIaU+Vs++8UDNwBXAn8UkXPd9ZcA\nI3AmgjsPZ7gQgFdU9XJVvQhn5OEbi3ylxhSRjUVmzJn5QVWXiMiNOL/Uv3IbBzHAYpzRc7ep6vfu\n/lOBoQWcrybwhoi0wBnnLTqf/WaqaiqQKiILcCaKOwR8q6rJAO74U02BRUBXEXkMqALUBtYCicW7\nZGNCYwnGmDPzs/unAJ+pav/AjSJySRHP9xdggar2cieJ+iKf/fIOIpiznB6wLguIcltR/wISVHWn\niIzEGQHbGE/ZLTJjSsYSoJOINAcQkSoi0hLnltd5brIA6FvIeWoCu9zXAwvY72YRiRWROjgj+hY0\nX1BOMjng9gv1KSQGY0qEJRhjSoCq7sdJCFNFZBVOwmnl3sZ6AJgrIouAfcDhAk41BnhORL7CmS4h\nP98Cs933+Yuq5jtJlDsb6kScaXs/ovQmrzMVnA3Xb4zHRKSaqh5zK7deBTar6stncL6RwDFVfbGk\nYjTGC9aCMcZ7Q9wO97U4t8D+7XM8xpQKa8EY4wMRGQQ8lGf1V6r6oB/xGOMFSzDGGGM8YbfIjDHG\neMISjDHGGE9YgjHGGOMJSzDGGGM8YQnGGGOMJ/4fMqMMRBLbFRwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x59e47b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最优参数'reg_alpha': 2, 'reg_lambda': 0.5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第二次调参(细调，步长0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [1.9, 2, 2.1], 'reg_lambda': [0.4, 0.5, 0.6]}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "#reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "reg_alpha = [ 1.9, 2, 2.1]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.4, 0.5, 0.6]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_2 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58244, std: 0.00332, params: {'reg_alpha': 1.9, 'reg_lambda': 0.4},\n",
       "  mean: -0.58296, std: 0.00359, params: {'reg_alpha': 1.9, 'reg_lambda': 0.5},\n",
       "  mean: -0.58241, std: 0.00368, params: {'reg_alpha': 1.9, 'reg_lambda': 0.6},\n",
       "  mean: -0.58261, std: 0.00372, params: {'reg_alpha': 2, 'reg_lambda': 0.4},\n",
       "  mean: -0.58232, std: 0.00366, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.58242, std: 0.00390, params: {'reg_alpha': 2, 'reg_lambda': 0.6},\n",
       "  mean: -0.58202, std: 0.00360, params: {'reg_alpha': 2.1, 'reg_lambda': 0.4},\n",
       "  mean: -0.58261, std: 0.00354, params: {'reg_alpha': 2.1, 'reg_lambda': 0.5},\n",
       "  mean: -0.58261, std: 0.00327, params: {'reg_alpha': 2.1, 'reg_lambda': 0.6}],\n",
       " {'reg_alpha': 2.1, 'reg_lambda': 0.4},\n",
       " -0.5820198137960948)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=260,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.7,\n",
    "        colsample_bytree=0.9,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_2 = GridSearchCV(xgb5_2, param_grid = param_test5_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_2.grid_scores_, gsearch5_2.best_params_,     gsearch5_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 536.79989543,  555.97099972,  557.56089058,  563.68644099,\n",
       "         557.68929791,  559.75301595,  558.27733169,  562.46377106,\n",
       "         505.30890198]),\n",
       " 'mean_score_time': array([ 0.94045377,  0.98145623,  0.9838563 ,  0.97205558,  0.97445569,\n",
       "         1.00745759,  0.98585634,  0.99465694,  0.87124996]),\n",
       " 'mean_test_score': array([-0.58244046, -0.58295682, -0.58240953, -0.58260857, -0.5823153 ,\n",
       "        -0.5824187 , -0.58201981, -0.58260519, -0.58260967]),\n",
       " 'mean_train_score': array([-0.49608438, -0.49619244, -0.49664785, -0.49648479, -0.49677709,\n",
       "        -0.49702513, -0.49709862, -0.4974858 , -0.49767242]),\n",
       " 'param_reg_alpha': masked_array(data = [1.9 1.9 1.9 2 2 2 2.1 2.1 2.1],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_reg_lambda': masked_array(data = [0.4 0.5 0.6 0.4 0.5 0.6 0.4 0.5 0.6],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'reg_alpha': 1.9, 'reg_lambda': 0.4},\n",
       "  {'reg_alpha': 1.9, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1.9, 'reg_lambda': 0.6},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.4},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.6},\n",
       "  {'reg_alpha': 2.1, 'reg_lambda': 0.4},\n",
       "  {'reg_alpha': 2.1, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2.1, 'reg_lambda': 0.6}],\n",
       " 'rank_test_score': array([5, 9, 3, 7, 2, 4, 1, 6, 8]),\n",
       " 'split0_test_score': array([-0.57704918, -0.57684928, -0.57696451, -0.57679139, -0.57613757,\n",
       "        -0.57620208, -0.57644394, -0.57707746, -0.57709845]),\n",
       " 'split0_train_score': array([-0.49646884, -0.4966649 , -0.49721394, -0.49639268, -0.49716968,\n",
       "        -0.49798926, -0.49798702, -0.4978275 , -0.49832786]),\n",
       " 'split1_test_score': array([-0.58144607, -0.5814132 , -0.58005177, -0.58103936, -0.58078166,\n",
       "        -0.58046325, -0.58001277, -0.58117383, -0.58163955]),\n",
       " 'split1_train_score': array([-0.49563587, -0.49585567, -0.49625012, -0.49651109, -0.49627461,\n",
       "        -0.49697079, -0.49666247, -0.4973569 , -0.4970614 ]),\n",
       " 'split2_test_score': array([-0.58192307, -0.58368313, -0.58221118, -0.58198141, -0.58307304,\n",
       "        -0.58241311, -0.58190777, -0.58187424, -0.58247877]),\n",
       " 'split2_train_score': array([-0.49615188, -0.49578416, -0.49634477, -0.49663006, -0.49717343,\n",
       "        -0.49644446, -0.49684839, -0.49791878, -0.49773879]),\n",
       " 'split3_test_score': array([-0.58522655, -0.5861487 , -0.58600392, -0.5861    , -0.5848333 ,\n",
       "        -0.58625894, -0.58563775, -0.5863891 , -0.58561099]),\n",
       " 'split3_train_score': array([-0.496771  , -0.49706761, -0.49702147, -0.49668502, -0.4969765 ,\n",
       "        -0.4972431 , -0.49695978, -0.49755132, -0.49844256]),\n",
       " 'split4_test_score': array([-0.58655867, -0.5866909 , -0.58681761, -0.5871321 , -0.5867523 ,\n",
       "        -0.58675746, -0.58609809, -0.5865125 , -0.58622171]),\n",
       " 'split4_train_score': array([-0.49539432, -0.49558983, -0.49640895, -0.49620512, -0.49629124,\n",
       "        -0.49647807, -0.49703545, -0.49677447, -0.4967915 ]),\n",
       " 'std_fit_time': array([  8.45892643,  12.71768344,  11.08880867,  12.7892756 ,\n",
       "         10.66413357,  12.2570611 ,  10.33823098,  10.62797854,  68.04692017]),\n",
       " 'std_score_time': array([ 0.02458259,  0.0271648 ,  0.00526924,  0.01592556,  0.04000528,\n",
       "         0.05555344,  0.01404915,  0.01552634,  0.15320327]),\n",
       " 'std_test_score': array([ 0.0033179 ,  0.0035873 ,  0.00367684,  0.00372413,  0.00366377,\n",
       "         0.00389978,  0.00360144,  0.00354184,  0.0032676 ]),\n",
       " 'std_train_score': array([ 0.00051013,  0.00057138,  0.00039171,  0.00017239,  0.00040976,\n",
       "         0.00056859,  0.0004616 ,  0.00040771,  0.00065977])}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.582020 using {'reg_alpha': 2.1, 'reg_lambda': 0.4}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x14c83dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_2.best_score_, gsearch5_2.best_params_))\n",
    "test_means = gsearch5_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_2.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda2.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前的日期和时间是 2018-01-06 12:36:43.227503\n"
     ]
    }
   ],
   "source": [
    "i2 = datetime.datetime.now()\n",
    "print (\"当前的日期和时间是 %s\" % i2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "start at 10:44"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第三次调优（步长0.05）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [2.1, 2.2], 'reg_lambda': [0.3, 0.35, 0.4]}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "#reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "reg_alpha = [2.1, 2.2]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.30, 0.35, 0.4]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_3 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58265, std: 0.00357, params: {'reg_alpha': 2.1, 'reg_lambda': 0.3},\n",
       "  mean: -0.58240, std: 0.00354, params: {'reg_alpha': 2.1, 'reg_lambda': 0.35},\n",
       "  mean: -0.58202, std: 0.00360, params: {'reg_alpha': 2.1, 'reg_lambda': 0.4},\n",
       "  mean: -0.58244, std: 0.00368, params: {'reg_alpha': 2.2, 'reg_lambda': 0.3},\n",
       "  mean: -0.58228, std: 0.00371, params: {'reg_alpha': 2.2, 'reg_lambda': 0.35},\n",
       "  mean: -0.58267, std: 0.00307, params: {'reg_alpha': 2.2, 'reg_lambda': 0.4}],\n",
       " {'reg_alpha': 2.1, 'reg_lambda': 0.4},\n",
       " -0.5820198137960948)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=260,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.7,\n",
    "        colsample_bytree=0.9,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_3 = GridSearchCV(xgb5_3, param_grid = param_test5_3, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_3.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_3.grid_scores_, gsearch5_3.best_params_,     gsearch5_3.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 540.46904454,  553.26330066,  552.46225677,  560.45899978,\n",
       "         555.18602405,  490.73530703]),\n",
       " 'mean_score_time': array([ 0.96096163,  1.01712179,  0.99840174,  0.98592172,  0.99840174,\n",
       "         0.83928151]),\n",
       " 'mean_test_score': array([-0.58265129, -0.58240378, -0.58201981, -0.58243953, -0.58227577,\n",
       "        -0.58266886]),\n",
       " 'mean_train_score': array([-0.49661823, -0.49717827, -0.49709862, -0.49709249, -0.49737426,\n",
       "        -0.49771134]),\n",
       " 'param_reg_alpha': masked_array(data = [2.1 2.1 2.1 2.2 2.2 2.2],\n",
       "              mask = [False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_reg_lambda': masked_array(data = [0.3 0.35 0.4 0.3 0.35 0.4],\n",
       "              mask = [False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'reg_alpha': 2.1, 'reg_lambda': 0.3},\n",
       "  {'reg_alpha': 2.1, 'reg_lambda': 0.35},\n",
       "  {'reg_alpha': 2.1, 'reg_lambda': 0.4},\n",
       "  {'reg_alpha': 2.2, 'reg_lambda': 0.3},\n",
       "  {'reg_alpha': 2.2, 'reg_lambda': 0.35},\n",
       "  {'reg_alpha': 2.2, 'reg_lambda': 0.4}],\n",
       " 'rank_test_score': array([5, 3, 1, 4, 2, 6]),\n",
       " 'split0_test_score': array([-0.57686419, -0.57667062, -0.57644394, -0.57661124, -0.57631959,\n",
       "        -0.57790035]),\n",
       " 'split0_train_score': array([-0.4975706 , -0.49745697, -0.49798702, -0.4978923 , -0.49771661,\n",
       "        -0.49851441]),\n",
       " 'split1_test_score': array([-0.58119487, -0.58102625, -0.58001277, -0.58092403, -0.5805345 ,\n",
       "        -0.58150568]),\n",
       " 'split1_train_score': array([-0.49637372, -0.49676443, -0.49666247, -0.4972062 , -0.49632107,\n",
       "        -0.49726805]),\n",
       " 'split2_test_score': array([-0.58249641, -0.58210753, -0.58190777, -0.58214208, -0.58226732,\n",
       "        -0.58199764]),\n",
       " 'split2_train_score': array([-0.4959426 , -0.49681707, -0.49684839, -0.49670903, -0.49788868,\n",
       "        -0.49757887]),\n",
       " 'split3_test_score': array([-0.58581483, -0.58572701, -0.58563775, -0.58526303, -0.58556281,\n",
       "        -0.5852957 ]),\n",
       " 'split3_train_score': array([-0.49735662, -0.49796297, -0.49695978, -0.49704709, -0.49820693,\n",
       "        -0.49793298]),\n",
       " 'split4_test_score': array([-0.58688743, -0.58648875, -0.58609809, -0.58725874, -0.58669594,\n",
       "        -0.58664614]),\n",
       " 'split4_train_score': array([-0.49584762, -0.49688992, -0.49703545, -0.49660782, -0.49673799,\n",
       "        -0.49726238]),\n",
       " 'std_fit_time': array([  7.44931144,  11.12298664,   7.48255184,   9.39300082,\n",
       "         11.21948866,  83.36258729]),\n",
       " 'std_score_time': array([ 0.02116101,  0.04972465,  0.02206189,  0.01167393,  0.02959901,\n",
       "         0.17687979]),\n",
       " 'std_test_score': array([ 0.00356614,  0.00353791,  0.00360144,  0.00367555,  0.00371077,\n",
       "         0.00307439]),\n",
       " 'std_train_score': array([ 0.00071587,  0.00046439,  0.0004616 ,  0.00045533,  0.00071962,\n",
       "         0.0004711 ])}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_3.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.582020 using {'reg_alpha': 2.1, 'reg_lambda': 0.4}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x59e41d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_3.best_score_, gsearch5_3.best_params_))\n",
    "test_means = gsearch5_3.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_3.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_3.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_3.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_3.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_3.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda3.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最终最优参数‘’reg_alpha': 2.1, 'reg_lambda': 0.4， log_loss：0.582020"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
       "       colsample_bytree=0.9, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
       "       max_depth=5, min_child_weight=1, missing=None, n_estimators=260,\n",
       "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
       "       reg_alpha=2.1, reg_lambda=0.4, scale_pos_weight=1, seed=3,\n",
       "       silent=True, subsample=0.7)"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb_final.fit(X_train, y_train, eval_metric='mlogloss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "dtest = np.array(test)\n",
    "test_predictions = xgb_final.predict(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "i3 = datetime.datetime.now()\n",
    "print (\"当前的日期和时间是 %s\" % i3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "start at 0:14"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_predproba = xgb_final.predict_proba(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2, 1, 2, ..., 2, 1, 2], dtype=int64)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.12275244,  0.38958219,  0.48766536],\n",
       "       [ 0.27757752,  0.41788077,  0.30454171],\n",
       "       [ 0.04961472,  0.10300793,  0.84737736],\n",
       "       ..., \n",
       "       [ 0.0673001 ,  0.32091865,  0.61178124],\n",
       "       [ 0.45128065,  0.45255816,  0.09616124],\n",
       "       [ 0.04934734,  0.40433958,  0.54631305]], dtype=float32)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predproba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(74659,)"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1592eeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(test_predictions);\n",
    "pyplot.xlabel('target');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "submission = pd.DataFrame()\n",
    "submission['interest_level'] = test_predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74629</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74630</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74631</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74632</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74633</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74634</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74635</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74636</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74637</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74638</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74639</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74640</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74641</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74642</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74643</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74644</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74645</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74646</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74647</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74648</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74649</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74650</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74651</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74652</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74653</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74654</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74655</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74656</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74657</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74658</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>74659 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       interest_level\n",
       "0                   2\n",
       "1                   1\n",
       "2                   2\n",
       "3                   2\n",
       "4                   2\n",
       "5                   2\n",
       "6                   2\n",
       "7                   1\n",
       "8                   2\n",
       "9                   2\n",
       "10                  2\n",
       "11                  2\n",
       "12                  2\n",
       "13                  2\n",
       "14                  2\n",
       "15                  2\n",
       "16                  2\n",
       "17                  2\n",
       "18                  2\n",
       "19                  2\n",
       "20                  2\n",
       "21                  2\n",
       "22                  2\n",
       "23                  1\n",
       "24                  2\n",
       "25                  1\n",
       "26                  2\n",
       "27                  1\n",
       "28                  2\n",
       "29                  2\n",
       "...               ...\n",
       "74629               1\n",
       "74630               2\n",
       "74631               2\n",
       "74632               2\n",
       "74633               2\n",
       "74634               2\n",
       "74635               2\n",
       "74636               2\n",
       "74637               2\n",
       "74638               2\n",
       "74639               2\n",
       "74640               2\n",
       "74641               2\n",
       "74642               2\n",
       "74643               2\n",
       "74644               2\n",
       "74645               1\n",
       "74646               2\n",
       "74647               2\n",
       "74648               1\n",
       "74649               1\n",
       "74650               1\n",
       "74651               2\n",
       "74652               2\n",
       "74653               2\n",
       "74654               2\n",
       "74655               2\n",
       "74656               2\n",
       "74657               1\n",
       "74658               2\n",
       "\n",
       "[74659 rows x 1 columns]"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "submission"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_map = {0: 'low', 1: 'medium', 2:'high'}\n",
    "submission['interest_level'] = submission['interest_level'].apply(lambda y: x_map[y])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "submission\n",
    "submission.to_csv('my_final_predictions.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x1589d518>"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nJA3m/wPKRiwk9tDaaAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x161e0630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(submission['interest_level'])\n",
    "pyplot.xlabel('target')\n",
    "pyplot.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
